Hoàn nguyên Git
Hoàn nguyên Git
revert
là lệnh chúng ta sử dụng khi muốn thực hiện một commit
trước đó và thêm nó dưới dạng một commit
mới, giữ nguyên log
.
Bước 1: Tìm commit
trước đó:
Bước 2: Sử dụng nó để thực hiện một commit
mới:
Hãy thực hiện một commit
mới, trong đó chúng tôi đã "vô tình" xóa một tệp:
Ví dụ
git commit -m "Just a regular update, definitely no accidents here..." [master 16a6f19] Just a regular update, definitely no accidents here... 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 img_hello_git.jpg
Bây giờ chúng tôi có một phần trong lịch sử commit
mà chúng tôi muốn quay lại. Hãy thử làm điều đó với revert
.
Git Hoàn nguyên Tìm cam kết trong nhật ký
Việc đầu tiên chúng ta cần tìm ra điểm mà mình muốn quay lại. Để làm điều đó, chúng ta cần phải xem qua nhật log
.
Để tránh danh sách nhật ký quá dài, chúng ta sẽ sử dụng tùy chọn --oneline
, tùy chọn này chỉ cung cấp một dòng cho mỗi lần xác nhận hiển thị:
- Bảy ký tự đầu tiên của
commit hash
- tin
commit message
Vì vậy, hãy tìm điểm chúng tôi muốn revert
:
Ví dụ
git log --oneline 52418f7 (HEAD -> master) Just a regular update, definitely no accidents here... 9a9add8 (origin/master) Added .gitignore 81912ba Corrected spelling error 3fdaa5b Merge pull request #1 from w3schools-test/update-readme 836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta facaeae (gh-page/master) Merge branch 'master' of https://github.com/w3schools-test/hello-world e7de78f Updated index.html. Resized image 5a04b6f Updated README.md with a line about focus d29d69f Updated README.md with a line about GitHub e0b6038 merged with hello-world-images after fixing conflicts 1f1584e added new image dfa79db updated index.html with emergency fix 0312c55 Added image to Hello World 09f4acd Updated index.html with a new line 221ec6e First release of Hello World!
Chúng tôi muốn quay lại commit
trước đó: 52418f7 (HEAD -> master) Just a regular update, definitely no accidents here...
, và chúng tôi thấy rằng đó là commit
mới nhất .
Đầu hoàn nguyên Git
Chúng tôi hoàn nguyên commit
mới nhất bằng cách sử dụng git revert HEAD
( revert
thay đổi mới nhất và sau đó commit
), thêm tùy chọn --no-edit
để bỏ qua trình chỉnh sửa thông báo cam kết (nhận thông báo revert
mặc định):
Ví dụ
git revert HEAD --no-edit [master e56ba1f] Revert "Just a regular update, definitely no accidents here..." Date: Thu Apr 22 10:50:13 2021 +0200 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img_hello_git.jpg
Bây giờ hãy kiểm tra lại log
:
Ví dụ
git log --oneline e56ba1f (HEAD -> master) Revert "Just a regular update, definitely no accidents here..." 52418f7 Just a regular update, definitely no accidents here... 9a9add8 (origin/master) Added .gitignore 81912ba Corrected spelling error 3fdaa5b Merge pull request #1 from w3schools-test/update-readme 836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta facaeae (gh-page/master) Merge branch 'master' of https://github.com/w3schools-test/hello-world e7de78f Updated index.html. Resized image 5a04b6f Updated README.md with a line about focus d29d69f Updated README.md with a line about GitHub e0b6038 merged with hello-world-images after fixing conflicts 1f1584e added new image dfa79db updated index.html with emergency fix 0312c55 Added image to Hello World 09f4acd Updated index.html with a new line 221ec6e First release of Hello World!
Lưu ý: Để hoàn nguyên về các lần xác nhận trước đó, hãy sử dụng git revert HEAD~ x
( x
là một số. 1 quay lại một lần nữa, 2 quay lại hai lần nữa, v.v.)
Trên trang tiếp theo, chúng ta sẽ xem xét git reset
, thao tác này sẽ đưa kho lưu trữ trở lại trạng thái trước đó trong các lần xác nhận mà không cần thực hiện một commit
mới .